์ฃผ์ ํต์ ํ๋กํ ์ฝ ๋น๊ต: HTTP, WebSocket, MQTT
ํ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋จ์ํ ์น ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋์ด ์ค์๊ฐ ์ฑํ , ์ฃผ์ ์์ธ ์ ๋ฐ์ดํธ, ์ค๋งํธํ ๊ธฐ๊ธฐ ์ ์ด ๋ฑ ๋ค์ํ ํต์ ๋ฐฉ์์ ์๊ตฌํฉ๋๋ค. ๊ฐ ์ํฉ์ ์ต์ ํ๋ 3๋ ํ๋กํ ์ฝ์ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค.
1. HTTP (HyperText Transfer Protocol)
๊ฐ์ฅ ๋์ค์ ์ธ ๋น์ฐ๊ฒฐ์ฑ(Connectionless) ๊ธฐ๋ฐ์ ์์ฒญ-์๋ต(Request-Response) ํ๋กํ ์ฝ์ ๋๋ค.
- ๋ฐฉ์: ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๊ฐ ์๋ตํ๊ณ ์ฐ๊ฒฐ์ ๋์ต๋๋ค.
- ์ฅ์ : ์ค๊ณ๊ฐ ๋จ์ํ๊ณ ํ์คํ๋์ด ์์ด ์ด๋์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, REST API์ ๊ธฐ๋ฐ์ด ๋ฉ๋๋ค.
- ๋จ์ : ์ค์๊ฐ ํต์ ์ ์ํด 'ํด๋ง(Polling)' ๋ฐฉ์์ ์จ์ผ ํ๋ฏ๋ก ์๋ฒ ๋ถํ๊ฐ ํฌ๊ณ ํค๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.
- ์ฃผ์ ์ฉ๋: ์ผ๋ฐ์ ์ธ ์น ์ํ, ๋ฌธ์/์ด๋ฏธ์ง ์ ์ก, ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ API.
2. WebSocket (์น์์ผ)
HTML5 ํ์ค์ ์ผ๋ถ๋ก ๋์ ๋ ์ ์ด์ค(Full-Duplex) ์๋ฐฉํฅ ํต์ ํ๋กํ ์ฝ์ ๋๋ค.
- ๋ฐฉ์: ์ฒ์์ HTTP๋ก ์ฐ๊ฒฐ(Handshake)์ ๋งบ์ ๋ค, ์ ์ฉ ํ๋กํ ์ฝ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํฉ๋๋ค.
- ์ฅ์ : ํ ๋ฒ ์ฐ๊ฒฐ๋๋ฉด ํค๋๊ฐ ๋งค์ฐ ์์ ํต์ ํจ์จ์ด ๋๊ณ , ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ธ์ ๋ ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค.
- ๋จ์ : ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํด์ผ ํ๋ฏ๋ก ๋์ ์ ์์๊ฐ ๋ง์ ๋ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ด์ด ํฝ๋๋ค.
- ์ฃผ์ ์ฉ๋: ์ค์๊ฐ ์ฑํ , ์ฃผ์ ์์ธ ๋์๋ณด๋, ๋ฉํฐํ๋ ์ด์ด ๊ฒ์.
3. MQTT (Message Queuing Telemetry Transport)
์ง์ฐ ์๊ฐ์ด ๊ธธ๊ฑฐ๋ ๋คํธ์ํฌ๊ฐ ๋ถ์์ ํ ํ๊ฒฝ์์ ๋์ํ๋๋ก ์ค๊ณ๋ ๋ฐํ-๊ตฌ๋ (Pub/Sub) ๊ธฐ๋ฐ์ ๊ฒฝ๋ ํ๋กํ ์ฝ์ ๋๋ค.
- ๋ฐฉ์: ์ค๊ฐ์ ๋ธ๋ก์ปค(Broker)๋ฅผ ๋๊ณ , ํด๋ผ์ด์ธํธ๋ ํน์ ์ฃผ์ (Topic)๋ฅผ ๊ตฌ๋ ํ๊ฑฐ๋ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.
- ์ฅ์ : ํค๋๊ฐ ๋งค์ฐ ์๊ณ (์ต์ 2๋ฐ์ดํธ), ์ ์ ๋ ฅ/์ ๋์ญํญ ํ๊ฒฝ์ ์ต์ ํ๋์ด ์์ต๋๋ค. QoS(์ ์ก ํ์ง ๋ณด์ฅ) ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- ๋จ์ : ์ค์ ๋ธ๋ก์ปค ๊ด๋ฆฌ๊ฐ ํ์ํ๋ฉฐ, ์ผ๋ฐ์ ์ธ ์น ๋ธ๋ผ์ฐ์ ์์๋ ์ง์ ์ง์ํ์ง ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
- ์ฃผ์ ์ฉ๋: IoT ๊ธฐ๊ธฐ ์ ์ด(์ค๋งํธํ), ์ผ์ ๋ฐ์ดํฐ ์์ง, ๋ชจ๋ฐ์ผ ์๋ฆผ(Push).
4. ํต์ฌ ๋น๊ต ์์ฝํ
| ๋น๊ต ํญ๋ชฉ | HTTP | WebSocket | MQTT |
|---|---|---|---|
| ํต์ ๋ชจ๋ธ | Request-Response | Full-Duplex | Publish-Subscribe |
| ์ฐ๊ฒฐ ์ํ | ๋น์ฐ๊ฒฐ์ฑ (Stateless) | ์ฐ๊ฒฐ ์งํฅ (Stateful) | ์ฐ๊ฒฐ ์งํฅ (Stateful) |
| ๋ฐฉํฅ์ฑ | ๋จ๋ฐฉํฅ (ํด๋ผ -> ์๋ฒ) | ์๋ฐฉํฅ (๋์ ์ ์ก) | ์๋ฐฉํฅ (๋ธ๋ก์ปค ๊ฒฝ์ ) |
| ์ค๋ฒํค๋ | ๋์ (ํฐ ํค๋) | ๋ฎ์ (์์ ํค๋) | ๋งค์ฐ ๋ฎ์ (์ต์ ํค๋) |
| OSI ๊ณ์ธต | ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต (L7) | ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต (L7) | ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต (L7) |
5. ๋ฌด์์ ์ ํํด์ผ ํ ๊น?
- "ํ์ค์ ์ธ ๋ฐ์ดํฐ ์์ฒญ๊ณผ ์๋ต์ด ํ์ํ๋ค" -> HTTP๋ฅผ ์ฌ์ฉํ์ธ์.
- "์น ๋ธ๋ผ์ฐ์ ์์ ๋๋ ์ด ์๋ ์ค์๊ฐ ์ฑํ ์ด๋ ๊ฒ์์ ๋ง๋ ๋ค" -> WebSocket์ด ์ ๋ต์ ๋๋ค.
- "์ ๋ ฅ ์๋ชจ๊ฐ ์ ์ด์ผ ํ๋ ์๋ฒ ๋๋ ๊ธฐ๊ธฐ๋ ์๋ง ๊ฐ์ ์ผ์๋ฅผ ์ ์ดํ๋ค" -> MQTT๋ฅผ ๊ฐ๋ ฅ ์ถ์ฒํฉ๋๋ค.
๊ฒฐ๋ก
ํ๋์ ์ธ ์๋น์ค๋ ์ด๋ค์ ํผํฉํ์ฌ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉ์๋ HTTP๋ก ๋ก๊ทธ์ธํ๊ณ , ์ฑํ ์ WebSocket์ผ๋ก ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ, ์๋ฆผ ์๋ฒ๋ MQTT๋ก ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ ํธ์๋ฅผ ๋ณด๋ด๋ ์์ ๋๋ค. ๊ฐ ๋๊ตฌ์ ํน์ฑ์ ์ดํดํ๊ณ ์ ์ฌ์ ์์ ๋ฐฐ์นํ๋ ์ค๊ณ ๋ฅ๋ ฅ์ ๊ธธ๋ฌ๋ณด์ธ์!